#include "timer.h"
#include "mcu_api.h"
#include "WaterPump.h"
#include "HX710C.h"

uint32_t KEy_Tick = 0;
uint32_t Wifi_tick = 0;
//uint32_t tick = 0;
uint32_t led_tick=0;
//uint32_t yellow_tick=0;
uint32_t Pump_tick = 0;
uint32_t Clear_tick = 0;   //清洗模式
void APM_MINI_TMR14_Init(void)
{
    TMR_TimeBase_T  timeBaseConfig;
    /* Enable Clock */
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_SYSCFG);
    RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR14);  //开启定时器时钟
    /* Set clockDivision = 1 */
    timeBaseConfig.clockDivision =  TMR_CKD_DIV1;
    /* Up-counter */
		timeBaseConfig.counterMode =  TMR_COUNTER_MODE_UP;   //向上计数
    /* Set divider = 47.So TMR1 clock freq ~= 48/(47 + 1) = 1MHZ */  
    timeBaseConfig.div = 4800-1 ;                    //    预分频系数  计数频率  1us
    /* Set counter = 0xffff */
    timeBaseConfig.period = 100-1;                    //定时器重装载数值    等于10ms进一次中断
    /* Repetition counter = 0x0 */
    timeBaseConfig.repetitionCounter =  0;
    TMR_ConfigTimeBase(TMR14, &timeBaseConfig);
    /* Enable update interrupt*/
    TMR_EnableInterrupt(TMR14, TMR_INT_UPDATE);
    NVIC_EnableIRQRequest(TMR14_IRQn, 1);
    /*  Enable TMR14  */
    TMR_Enable(TMR14);
}


void APM_MINI_TMR3_Init(void)
{
    TMR_TimeBase_T  timeBaseConfig;
    /* Enable Clock */
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_SYSCFG);
    RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR3);  //开启定时器时钟
    /* Set clockDivision = 1 */
    timeBaseConfig.clockDivision =  TMR_CKD_DIV1;
    /* Up-counter */
		timeBaseConfig.counterMode =  TMR_COUNTER_MODE_UP;   //向上计数
    /* Set divider = 47.So TMR1 clock freq ~= 48/(47 + 1) = 1MHZ */  
    timeBaseConfig.div = 48000-1 ;                    //    预分频系数  计数频率  1us
    /* Set counter = 0xffff */
    timeBaseConfig.period = 1000-1;                    //定时器重装载数值    等于1s进一次中断
    /* Repetition counter = 0x0 */
    timeBaseConfig.repetitionCounter =  0;
    TMR_ConfigTimeBase(TMR3, &timeBaseConfig);
    /* Enable update interrupt*/
    TMR_EnableInterrupt(TMR3, TMR_INT_UPDATE);
    NVIC_EnableIRQRequest(TMR3_IRQn, 1);
    /*  Enable TMR14  */
    TMR_Enable(TMR3);
}



void APM_MINI_TMR6_Init(void)
{
    TMR_TimeBase_T  timeBaseConfig;
    /* Enable Clock */
//    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_SYSCFG);
    RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR6);  //开启定时器时钟
    /* Set clockDivision = 1 */
    timeBaseConfig.clockDivision =  TMR_CKD_DIV1;
    /* Up-counter */
		timeBaseConfig.counterMode =  TMR_COUNTER_MODE_UP;   //向上计数
    /* Set divider = 47.So TMR1 clock freq ~= 48/(47 + 1) = 1MHZ */  
    timeBaseConfig.div = 48000-1 ;                    //    预分频系数  计数频率  1us
    /* Set counter = 0xffff */
    timeBaseConfig.period = 1000-1;                    //定时器重装载数值    等于1s进一次中断
    /* Repetition counter = 0x0 */
    timeBaseConfig.repetitionCounter =  0;
    TMR_ConfigTimeBase(TMR6, &timeBaseConfig);
    /* Enable update interrupt*/
    TMR_EnableInterrupt(TMR6, TMR_INT_UPDATE);
    NVIC_EnableIRQRequest(TMR6_IRQn, 0);
    /*  Enable TMR14  */
    TMR_Enable(TMR6);
}


/**********************************************************
//	*	函数名称： TMR6Isr()
//	* 功能    ： 定时器中断调用函数     1s进一次中断
//	*	参数    ： 无 
//	*	返回值  :  无
***********************************************************/
uint32_t Aip_Tick = 0;

void TMR6Isr(void)
{ 
		Aip_Tick++;
  if(Aip_Tick>=10)
	{
		Write_flag = 1;    //调用时间校准
//		HALL_update();     //上报一下故障值                               *************卡死
		Aip_Tick = 0;
	}		

}



/**********************************************************
//	*	函数名称： TMR3Isr()
//	* 功能    ： 定时器中断调用函数     1s进一次中断
//	*	参数    ： 无 
//	*	返回值  :  无
***********************************************************/
u8 Mcu_time = 0;

void TMR3Isr(void)
{   
  Pump_tick++;         //水泵间歇出水模式  计时
	Mcu_time++;            //10S判断一下时间 校准一下时间 用于晚上开净水模块
	Clear_tick++;
	if(Mcu_time>=10)
	{
		mcu_get_system_time();     //调用时间校准
//		HALL_update();     //上报一下故障值                               *************卡死
		Mcu_time = 0;
	}		
	PUMP_Waterpur();                  //净水要不要开
}


u16 Cheek_timer = 0; 
/**********************************************************
//	*	函数名称： TMR14Isr()
//	* 功能    ： 定时器中断调用函数    10ms进一次中断
//	*	参数    ： 无
//	*	返回值  :  无
***********************************************************/
void TMR14Isr(void)
{
//	Key_Tick();     //判断按键标志位 10ms判断一次	
	KEy_Tick++;   //按键标志位判断计时
	Cheek_timer++;
	led_tick++;
	if(Cheek_timer >= 10)
	{
		Cheak_PUMP();
		Cheek_timer = 0;
	}
		Wifi_tick++;    //Wifi 配网指示灯计时
//		tick++;
	Count_led_blink();
	
}


